草庐IT

javascript - localStorage.setItem 在刷新时不持久

全部标签

ruby - 配置 RSpec 以将 Capybara.javascript_driver 用于所有请求规范

是否可以全局配置RSpec以对所有请求规范使用Capybara的(默认或自定义)JavaScript驱动程序?我们有时会忘记手动将js:true添加到每个请求规范中,这有点烦人。 最佳答案 在spec_helper.rb中,设置以下内容:config.before(:each)doifexample.metadata[:type]==:requestCapybara.current_driver=:selenium#orequivalentjavascriptdriveryouareusingelseCapybara.use_def

ruby - `save` 和 `save!` 是唯一持久化 ActiveRecord 对象的方法吗?

我正在尝试调试一些代码。一个奇怪的部分是before_save回调被调用了两次,尽管我只打算保存对象一次。为了追踪这是如何发生的,我在类中定义了这些方法:%w[savesave!].eachdo|method_name|define_method(method_name)do|*args|puts"whocalled'#{method_name}'?#{caller.first}"super(*args)endend从这个输出中,我只看到一个持久化调用。我相信save和save!是导致ActiveRecord持久化对象的唯一方法。据我所知,其他持久化方法依赖于这两者之一;例如,upda

ruby - 将 ruby​​ 数组用于 erb 中的 javascript 数组。转义引号

我在网上找到了很多这方面的东西,但它们对我不起作用。我错过了什么吗?在我的Controller中我有@t=["a","b","c"]在作为“回调”的erb文件中,@t呈现如下:["a","b","c"]我做了一些技巧来将"替换为正确的'符号。我读过to_json应该可以工作,但它没有。下面的代码不起作用["a","b","c"].to_json。结果是一样的。 最佳答案 to_json工作正常。您遇到的是Rails3.x的XSS保护。在Railscasts上有一篇关于此的好

ruby-on-rails - 如何使用 Turbolinks 刷新页面

我知道我可以在Turbolinks5上调用以下代码但它改变了滚动位置。有没有办法调用Turbolinks来刷新页面而不改变滚动位置?Turbolinks.visit(location.toString());这会做我想做的,但希望使用Turbolinkswindow.location.reload() 最佳答案 在调用visit之前存储当前滚动位置,然后在页面加载时滚动到该存储位置。将存储的滚动位置重置为null可确保后续页面加载不会滚动到旧位置。一种可能的实现可能是:varreloadWithTurbolinks=(functio

Ruby 对象字面量(ala javascript)

在ruby中你可以去a={}a['a']=82a['b']='foo'putsa['a']#82我希望我可以使用点符号,例如javascript。将a.a#82有没有办法在ruby​​中构建对象文字并使用点表示法访问它们? 最佳答案 您可以创建一个Struct.A=Struct.new(:a,:b)a=A.new(82,'foo')putsa.a#=>82编辑:你甚至可以做到a={}a['a']=82a['b']='foo'Struct.new(*a.keys).new(*a.values)

ruby - 从 Cucumber/Capybara 测试中执行 JavaScript

似乎Selenium有一个名为JavascriptExecutor的功能,它可以直接在页面上执行JavaScript。然而,我的Cucumber/Capybara测试似乎没有这样的东西。如何从我的Cucumber测试中执行任意JavaScript? 最佳答案 Capybara有两种执行javascript的方法#execute_script和#evaluate_script。两者都可以在以下位置找到:http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Seleni

ruby - 如何像在 Javascript 中一样在 Ruby 中动态创建对象及其方法?

我最近发现在Ruby中动态创建对象和方法是一件很费力的事情,这可能是因为我有Javascript背景经验。在Javascript中,您可以动态创建对象及其方法,如下所示:functionsomewhere_inside_my_code(){foo={};foo.bar=function(){/**dosomething**/};};如何在Ruby中完成上述语句(与在Javascript中一样简单)? 最佳答案 您可以使用单例方法实现此目的。请注意,您可以对所有对象执行此操作,例如:str="Ilikecookies!"defstr.

ruby-on-rails - 使用 Rails Assets 管道在 JavaScript 文件中编码问题

我正在使用Rails3.1和Assets管道(ruby1.9.2)。在尝试提供具有utf-8编码字符串的javascriptjs.erb文件时出现以下错误invalidbytesequenceinUS-ASCII我在我的environment.rb文件中设置了Encoding.default_external="UTF-8"。我如何让Assets管道以不同的编码提供服务?编辑仅当我在文件外部生成utf-8字符时才会出现该错误(在本例中是通过从数据库查询)。如果我添加,错误就会消失到文件的顶部。我猜这里会进行某种编码猜测,但如果没有那种骇人听闻的解决方案,我该如何避免呢?

ruby-on-rails - 从 HTML 页面中删除所有 JavaScript

我试过使用Sanitizegem清理包含网站HTML的字符串。它只删除了标记,而不是脚本标记内的JavaScript。我可以使用什么从页面中删除JavaScript? 最佳答案 require'open-uri'#includedwithRuby;onlyneededtoloadHTMLfromaURLrequire'nokogiri'#geminstallnokogirireadmoreathttp://nokogiri.orghtml=open('http://stackoverflow.com')#GettheHTMLsour

ruby-on-rails - RSpec:在每个上下文之后刷新表/销毁对象

你如何删除你创建的对象(在数据库和内存中)每次测试后AND在每个上下文之后?(在某种情况下,相互构建测试可能是有意义的)是否有自动执行此操作的方法?我有以下问题:每个测试都会将条目保存到数据库中。下一个测试则取决于这些条目。即使我想构建依赖于其他测试的测试,我也做不到,因为测试的执行顺序是不可控的。工厂.rb:sequence(:name){|n|"purchaser#{n}"}organization_spec.rb:context"whennosupplierexists"doit"findsnoassociatedsuppliers"dopurchaser=create(:org